function euclidean_sim_matrix=getOushiKernel(y)
krnl = y*y';
y = krnl / mean(diag(krnl));
% 假设疾病基因关联矩阵 y 是一个 960x3118 的矩阵
% 每行代表疾病，每列代表基因

% 计算欧几里得距离
euclidean_dist = pdist2(y, y, 'euclidean');

% 计算欧几里得相似性核矩阵
euclidean_sim_matrix = 1 ./ (1 + euclidean_dist);

nan_rows = any(isnan(euclidean_sim_matrix), 2);

% 将包含 NaN 的行替换为 0
euclidean_sim_matrix(nan_rows, :) = 0;

% euclidean_sim_matrix 现在包含了所有疾病之间的欧几里得相似性
end

% function K = getOushiKernel(X, sigma)
%     % X 是 m x n 的数据矩阵，每行代表一个疾病向量
%     % sigma 是拉普拉斯核的尺度参数
%     % K 将是 m x m 的核矩阵
%     
%     m = size(X, 1); % 疾病数量
%     K = zeros(m, m); % 初始化核矩阵
%     
%     % 计算每一对疾病之间的欧氏距离
%     for i = 1:m
%         for j = i:m
%             dist = norm(X(i,:) - X(j,:)); % 使用 norm 函数计算欧氏距离
%             K(i, j) = exp(-dist / sigma); % 计算拉普拉斯核
%             K(j, i) = K(i, j); % 核矩阵是对称的
%         end
%     end
% end